package common.model.Entity.StoreEntity;

import common.model.Entity.BaseEntity;
import lombok.Getter;
import lombok.Setter;

/**
 * 商品实体类，表示商店中的商品信息。
 * 包含商品的基本信息、库存状态和分类信息等。
 */
@Getter
@Setter
public class Product extends BaseEntity {
    /**
     * 商品名称
     */
    private String productName;

    /**
     * 商品价格
     */
    private double price;

    /**
     * 商品库存数量
     */
    private int stock;

    /**
     * 商品描述信息
     */
    private String description;

    /**
     * 分类ID，外键关联到分类表
     */
    private long categoryId;

    /**
     * 分类名称（冗余字段，便于查询显示）
     */
    private String categoryName;

    /**
     * 商品状态：0-下架，1-上架
     */
    private int status;

    /**
     * 商品图片URL
     */
    private String imageUrl;

    /**
     * 默认构造函数
     */
    public Product() {}

    /**
     * 带参数的构造函数，用于创建完整的商品对象
     *
     * @param id 商品ID
     * @param productName 商品名称
     * @param price 商品价格
     * @param stock 商品库存
     * @param description 商品描述
     * @param categoryId 分类ID
     * @param categoryName 分类名称
     * @param status 商品状态
     * @param imageUrl 商品图片URL
     */
    public Product(long id, String productName, double price, int stock,
                   String description, long categoryId, String categoryName,
                   int status, String imageUrl) {
        super(id);
        this.productName = productName;
        this.price = price;
        this.stock = stock;
        this.description = description;
        this.categoryId = categoryId;
        this.categoryName = categoryName;
        this.status = status;
        this.imageUrl = imageUrl;
    }
}